package com.agua.enturno.vista.dto.assemblers;

import com.agua.enturno.excepciones.ExcepcionDeReglaDelNegocio;
import com.agua.enturno.modelo.turno.EstadoDeTurno;
import com.agua.enturno.modelo.turno.Horario;
import com.agua.enturno.vista.dto.HorarioFullDTO;

import java.util.ArrayList;
import java.util.List;
import java.util.SortedSet;

public class HorarioFullAssembler extends NullAwareSimpleAssembler<Horario, HorarioFullDTO>{

	private TurnoAssembler turnoAssembler = new TurnoAssembler();
	private AgendaAssembler agendaAssembler = new AgendaAssembler();
	
	@Override
	protected HorarioFullDTO internalAssemble(Horario horario) {
		return new HorarioFullDTO(
				horario.getId(), 
				agendaAssembler.assemble(horario.getAgenda()), 
				horario.getIntervalo(), 
				horario.getEstado(), 
				horario.getComentarioDelEstado(), 
				horario.getTurnos().size(),
				horario.getTurnos(EstadoDeTurno.OCUPADO).size(),
				turnoAssembler.assemble(horario.getTurnos())
		);
	}

	@Override
	protected Horario internalDisassemble(HorarioFullDTO horarioDTO) throws ExcepcionDeReglaDelNegocio {
		return null;
	}
	
	public List<HorarioFullDTO> assemble(SortedSet<Horario> horarios) {
		
		List<HorarioFullDTO> horariosFullDTO = new ArrayList<HorarioFullDTO>();
		
		for (Horario horario : horarios) 
			horariosFullDTO.add(this.assemble(horario));
		
		return horariosFullDTO;
	}

}
